package top.gytf.unifiedcall.model.code;

import cn.hutool.core.text.CharSequenceUtil;

import java.io.Serializable;

/**
 * 用于描述一段编码，包含其序列化逻辑、校验逻辑
 * <p>
 * 实现类必须为枚举类
 */
public interface Code extends Serializable {
    /**
     * 将对象序列化，序列化后的值用于网络传输或者比较，该文本一致则视为两个编码对象一致。
     * <p>
     * 需要编码对应一致时返回值固定
     * @return 编码的文本值
     */
    String value();

    /**
     * 校验编码是否符合规范
     *
     * @return 是否通过检验
     */
    default boolean validate() {
        return CharSequenceUtil.isNotEmpty(value());
    }
}
